package com.devilvan.betrice.jpxgmn.service;

import com.devilvan.betrice.common.BetriceResultVo;
import com.devilvan.betrice.jpxgmn.dto.JpxgmnHeaderDto;
import com.devilvan.betrice.jpxgmn.entity.JpxgmnDownloadEntity;
import com.devilvan.betrice.jpxgmn.po.JpxgmnHeaderPo;
import com.devilvan.betrice.jpxgmn.vo.JpxgmnDownloadVo;

import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;

/**
 * @author Evad.Wu
 * @Description JPXGMN-头信息表 业务逻辑接口
 * @date 2022-11-16
 */
public interface JpxgmnHeaderService {
    /**
     * 保存
     *
     * @param jpxgmnHeaderDto 控制层处理后的数据传输对象
     * @return 保存回调对象
     */
    JpxgmnHeaderPo saveUpdate(JpxgmnHeaderDto jpxgmnHeaderDto);

    /**
     * 批量保存
     *
     * @param list 控制层处理后的数据传输对象集合
     * @return 保存回调对象
     */
    List<JpxgmnHeaderPo> saveUpdateBatch(List<JpxgmnHeaderDto> list);

    /**
     * 根据PID查询
     *
     * @param pid 系统ID
     * @return 结果对象
     */
    JpxgmnHeaderPo findByPid(String pid);

    /**
     * header 解析报文控制器
     *
     * @param url       请求网址（带参数）
     * @param keyword   关键字
     * @param subHeader 头信息
     * @return 形式返回
     */
    CompletableFuture<BetriceResultVo<JpxgmnHeaderPo>> doJpxgmnHeaderRequest(String url, String keyword, Map<String, String> subHeader);

    /**
     * 根据图片下载地址下载
     *
     * @param jpxgmnDownloadVo 下载需要的信息
     * @return 形式回调
     */
    BetriceResultVo<List<JpxgmnDownloadEntity>> doJpxgmnDetailDownloadScheduler(JpxgmnDownloadVo jpxgmnDownloadVo);
}